iT邦幫忙

2026 iThome 鐵人賽

DAY 16
0

用前面學的 set image,把版本換成一個根本不存在的 tag

kubectl set image deployment/web nginx=nginx:not-a-real-tag -n ithome-lab
kubectl get pods -n ithome-lab

https://ithelp.ithome.com.tw/upload/images/20260930/20176154WiX00DVB3U.png

原本以為服務會掛掉結果沒有,舊的三個 Pod 好好地繼續跑,只有新開的那一個卡住

K8s 要先確認新的 Pod 起得來,才會去動舊的。新的起不來,它就停在那邊不會往下走,舊的一個都不會被砍。所以這種故障使用者其實無感,你只會發現部署一直沒完成

等一下再看一次

kubectl get pods -n ithome-lab

https://ithelp.ithome.com.tw/upload/images/20260930/20176154BHknmcvMlF.png

狀態變了。這兩個是同一件事的兩個階段,ErrImagePull 是這次拉失敗,ImagePullBackOff 是失敗太多次進入退避重試,等待時間會越拉越長。看到後面那個就代表它已經試過好幾輪了

照流程往下走

kubectl describe pod <POD_NAME> -n ithome-lab

https://ithelp.ithome.com.tw/upload/images/20260930/20176154xaqd9jDm7I.png

Events 裡面會有 Failed to pull image 開頭的訊息,後面接的錯誤內容是關鍵。找不到 tag 的話會是 manifest unknown 之類的字眼,那就是 tag 打錯或那個版本根本不存在

kubectl logs <POD_NAME> -n ithome-lab

https://ithelp.ithome.com.tw/upload/images/20260930/20176154aJCjUMKWTq.png

logs 這時候不會有程式輸出,而是直接回一個錯誤,告訴你 container is waiting to start 加上原因。這個結果本身就是資訊,代表程式還沒開始跑,問題發生在更前面的階段,就不再往程式邏輯的方向找了

順帶ImagePullBackOff 不是只有 tag 打錯這一種可能。私有 registry 沒有給 imagePullSecrets 會長得很像,訊息裡會出現 unauthorized;網路連不到 registry 也是,訊息會是連線逾時。三種的 STATUS 一模一樣,要靠 Events 裡面那一行錯誤字串分辨

退回上一版

kubectl rollout undo deployment/web -n ithome-lab
kubectl rollout status deployment/web -n ithome-lab
kubectl get pods -n ithome-lab

https://ithelp.ithome.com.tw/upload/images/20260930/201761546TV2hn2omX.png

明天見 :D


上一篇
Day 15 Troubleshooting
系列文
讓Claude Code當我的 K8s 助教:部署、故障排查與入門可觀測性 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言